package com.winning.common.data.dao.inter;

import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import net.sf.json.JSONObject;

import com.framework.server.db.bean.PageBean;
import com.framework.server.db.bean.PageQueryBean;


/**
 * 类名称：PlatBasicDataDaoInter
 * 类描述：平台基础数据服务接口
 * 创建人：liuwensheng
 * 创建时间：2016-12-9 上午10:10:24
 * 修改人：liuwensheng
 * 修改时间：2016-12-9 上午10:10:24
 * 修改备注：
 */
public interface PlatBasicDataDaoInter {
    /**
     * 获取患者信息数据接口 <br/>
     * 方法名称: getPatientPersionInfoDataService
     *
     * @param
     * @return List<JSONObject>  返回类型说明<br/>
     * @throws <br/>
     * @author liuwensheng@winning.com.cn<br/>
     * 创建时间：2016-12-9/上午10:39:48<br/>
     */
    public List<Map<String, Object>> getPatientPersionInfoDataService();


    /**
     * 根据提供的SQL获取平台基础数据源 <br/>
     * 方法名称: getPlatBasicDataBySQLService
     *
     * @param
     * @return List<JSONObject>  返回类型说明<br/>
     * @throws <br/>
     * @author liuwensheng@winning.com.cn<br/>
     * 创建时间：2016-12-9/上午10:39:48<br/>
     */
    public List<Map<String, Object>> getPlatBasicDataBySQLService(String sql);

    /**
     * 根据提供的SQL获取平台基础数据源，可指定数据库 <br/>
     * 方法名称: getPlatBasicDataByDataSourseIDService
     *
     * @param sql
     * @param dataSourseID 数据源ID
     * @return List<HashMap                                                                                                                               <                                                                                                                               String                                                                                                                               ,                                                                                                                                                                                                                                                               Object>>  返回类型说明<br/>
     * @throws <br/>
     * @author liuwensheng@winning.com.cn<br/>
     * 创建时间：2016-12-9/上午10:39:48<br/>
     */
    public List<HashMap<String, Object>> getPlatBasicDataByDataSourseIDService(String sql, String dataSourseID);


    /**
     * 由于SYS_SJSC_TABLE中tableName字段存在主键唯一约束性，需要判断是做新增还是修改操作 <br/>
     * 方法名称: insertBusnisseLastTime
     *
     * @param moduleName             模块的名称
     * @param serviceName
     * @param mapKey
     * @param lastTimeValueFromLocal
     * @return void  返回类型说明<br/>
     * @throws <br/>
     * @author liuwensheng@winning.com.cn<br/>
     * 创建时间：2016-12-13/下午5:44:44<br/>
     */
    public void insertBusnisseLastTime(String moduleName, String serviceName, String mapKey, String lastTimeValueFromLocal, String dataSourseID);

    /**
     * 业务表的增量更新时间，以map结构存储 <br/>
     * 方法名称: getTableIncreaseTimeMapFromDB
     *
     * @param
     * @return HashMap<String                                                                                                                               ,                                                                                                                               String>  返回类型说明<br/>
     * @throws <br/>
     * @author liuwensheng@winning.com.cn<br/>
     * 创建时间：2016-12-13/上午8:48:51<br/>
     */
    public HashMap<String, String> getTableIncreaseTimeMapFromDB(String dataSourseID);

    /**
     * @param sql
     * @param columnName
     * @param dataSourseID
     * @return int
     * @throws
     * @Title: queryTotalDataCount
     * @Description: 统计接口
     */
    public int queryTotalDataCount(String sql, String columnName, String dataSourseID);

    /**
     * 分页查询数据
     *
     * @param pageBean
     * @param basicSQL
     * @param orderStr
     * @param dataSourseID 指定的数据源名称
     * @return
     * @throws SQLException
     */
    public PageQueryBean getParamByPageQuery(PageBean pageBean, String basicSQL, String orderStr, String dataSourseID) throws SQLException;


    /**
     * 增加基本信息注册信息返回结果
     * 方法名称: insertPersionRegisterResult
     *
     * @param
     * @return void  返回类型说明<br/>
     * @throws <br/>
     * @author zq@winning.com.cn<br/>
     * 创建时间：Dec 22, 2016/3:43:27 PM<br/>
     */
    public int insertJBXXRegisterResult(String sql, Object[] params, String dataSourseID);


    /**
     * 执行sql语句获取结果
     * 方法名称: executeSQLByDataSourseID
     *
     * @param
     * @return List<HashMap                                                                                                                               <                                                                                                                               String                                                                                                                               ,                                                                                                                               Object>>  返回类型说明<br/>
     * @throws <br/>
     * @author zq@winning.com.cn<br/>
     * 创建时间：2017-1-13/上午9:02:46<br/>
     */
    public List<HashMap<String, Object>> executeSQLByDataSourseID(String sql, Object[] params, String dataSourseID);

    /**
     * 执行SQL语句，获取JSONObject对象
     * 方法名称: executSQLForJSONObject
     *
     * @param
     * @return JSONObject  返回类型说明<br/>
     * @throws <br/>
     * @author lenovo@winning.com.cn<br/>
     * 创建时间：2017-2-7/上午10:55:32<br/>
     */
    public JSONObject executSQLForJSONObject(String sql, Object[] params, String dataSourseID);


    /**
     * 执行SQL语句获取json数组对象
     * 方法名称: executeSQLForJSONArrayList
     *
     * @param
     * @return List<JSONObject>  返回类型说明<br/>
     * @throws <br/>
     * @author lenovo@winning.com.cn<br/>
     * 创建时间：2017-2-7/下午1:21:26<br/>
     */
    public List<JSONObject> executeSQLForJSONArrayList(String sql, Object[] params, String dataSourseID);

}
